哈囉大家好我是 Larry,這是我第二次參加鐵人賽了,我去年的主題是用 Go 寫一個通用的釣魚網站,比較偏 Go(Golang) 在網路方面的應用;今年則是要用 Go 寫一個 Shell,算是 Go 在系統方面的應用
雖然這一系列會專注在 Shell 的實作上,最終做出一個真的可以用的 Shell,但目的並不是要做出一個超越古今、驚天地、泣鬼神的 Shell,而是希望讀者在跟著我實作的過程中認識 Shell 是怎麼運作的、學習 Linux 系統中 Process、Signal、Standard IO 等等重要觀念,同時也更了解 Go 這個程式語言
我相信應該大多數人都用過 bash 以外的 Shell(如果沒有,建議你用用看 zsh,真的會發現新世界XD),但你知道那些強大的功能是怎麼做出來的嗎?不知道的話也沒關係,跟著文章做一次就知道了~
Go 被譽為 21 世紀的 C 語言不是沒有原因的,除了效能接近 C/C++ 之外,Go 對於系統 API 的操作能力也是相當強,一起來看看怎麼用 Go 寫系統應用吧
你什麼都不懂也沒關係,只要有一顆願意學習的心就沒有什麼是學不會的。俗話說「萬事起頭難」,雖然這一系列不會從頭開始教 Go 語法,但會附很多參考資料讓你讀,如果真的還是看不懂的話可以在文章底下留言,我會盡力解答你的問題~
整個系列文大概會分成這幾個部分,最終會完成一個堪用的 Shell 並且發佈出去
簡單介紹一下 Shell 的原理,讓你知道你的指令是怎麼被執行的,Shell 跟終端機的又分別扮演什麼角色
根據前一部分說到的原理,把執行指令、切換資料夾、錯誤處理等等基本功能實作出來
幫 Shell 加上一些進階功能,譬如說加上顏色、設定快捷鍵、顯示 git status 等等
把做好的 shell 發佈到 Homebrew 上,讓全世界都可以安裝我寫的 Shell(??請問誰想裝)
沒問題的話明天就要正式開始了,希望大家會喜歡這個系列,如果對於內容有任何問題、或是覺得哪裡講解不夠清楚,也很歡迎各位在留言區跟我說,我會參考大家的建議進行調整,謝謝大家